package com.ylfstu.houserent.service;

import com.ylfstu.houserent.domain.House;

/**
 * 1.响应House[]，保存House对象
 * 2.完成对房屋信息的各种操作
 */
public class HouseService {
    private House[] houses;
    private int houseNums = 1;
    private int idCounter = 1;//记录当前增长到哪个值

    public HouseService(int size) {
        houses = new House[size];//创建HouseService对象，指定数组大小
        //初始化一个House对象
        houses[0] = new House(1, "jack", "113", "钱塘区", 2000, "未出租");
//        houses[1] = new House(2, "mary", "114", "钱塘区", 2500, "未出租");
    }

    //findById方法，查找一个房屋信息，返回一个house对象，没有就返回null
    public House findById(int findId) {
        for (int i = 0; i < houseNums; i++) {
            if (findId == houses[i].getId()) {
                return houses[i];
            }
        }
        return null;
    }

    //del方法，删除一个房屋信息
    public boolean del(int delId) {
        //先找到要删除的房屋信息的下标
        int index = -1;
        for (int i = 0; i < houseNums; i++) {
            if (delId == houses[i].getId()) {//要删除的房屋对应的id,是数组下标为i的元素
                index = i;
            }
        }
        //没有找到
        if (index == -1) {
            return false;
        }
        //如果找到，将其删除
        for (int i = index; i < houseNums - 1; i++) {
            houses[i] = houses[i + 1];
        }
        houses[--houseNums] = null;//把当前存在的房屋信息最后一个置空
        return true;
    }

    //add方法,添加新对象
    public boolean add(House newHouse) {
        //判断是否还能继续添加(暂时不考虑数组扩容) => 如何加数组扩容
        if (houseNums == houses.length) {
            System.out.println("数组已满，不能再添加...");
            return false;
        }
        //把newHouse存入数组
        houses[houseNums++] = newHouse;
        //设计一个id自增长的机制
        newHouse.setId(++idCounter);//设置newHouse的id
        return true;
    }


    //返回house数组
    public House[] list() {
        return houses;
    }
}
